<?php
//------------------------------------------------------------ Contraintes d'accès de la page

	// on vérifie que cette page est appelée à partir de l'index et que l'utilisateur a le droit d'édition
	if(isset($_SESSION) && ($GLOBALS['USER']['level'] >= 4 || $GLOBALS['USER']['admin'])){
	
		// l'identifiant de la donnée à supprimer est indiqué par un entier
		if(isset($_GET['id']) && numericInt($_GET['id'])){

?>
<?php
//------------------------------------------------------------ Suppression des données

/********************************* Règles :

	- id doit désigner un seul sachet de graines
	- Le sachet de graines doit exister dans la BDD
	- Le sachet de graines doit être sorti

*****************************************/

	$statut = array(); // indique le statut du traitement du formulaire (echec ou succes) - tableau contenant les messages à afficher
	$erreur = false; // indique si une erreur a été rencontrée lors du traitement

	//---------------------------------- Contrôle des données ----------------------------------
		
	$nb_sachets = valueExists((int)$_GET['id'], "CODESACHETGRAINE", "sachet_graines", $connexion);
	
	if($nb_sachets == 0){ // le sachet de graines n'existe pas
		$statut[] = "Le sachet de graines indiqué n'existe pas";
		$erreur = true;
	}else{
		
		// On compte le nombre de sorties pour savoir si le sachet de graines a été rendu
		$query_verification_sortie = "SELECT COUNT(DISTINCT en.CODEENTREE), COUNT(DISTINCT so.CODESORTIE) ";
		$query_verification_sortie .= "FROM sachet_graines sa ";
		$query_verification_sortie .= "LEFT JOIN entree en ON en.SAC_CODESACHETGRAINE = sa.CODESACHETGRAINE ";
		$query_verification_sortie .= "LEFT JOIN sortie so ON so.CODESACHETGRAINE = sa.CODESACHETGRAINE ";
		$query_verification_sortie .= "WHERE sa.CODESACHETGRAINE = ".$_GET['id']." ";
		
		$result_verification_sortie = mysql_query($query_verification_sortie, $connexion) or logError("VERIFICATION SORTIES-".$query_verification_sortie."-".mysql_error());
		
		if(mysql_num_rows($result_verification_sortie) == 1){ // on a réussi à récupérer les données de la sortie à supprimer
			
			$tab_verification_sortie = mysql_fetch_row($result_verification_sortie);
			
			if($tab_verification_sortie[0] != $tab_verification_sortie[1]){
				$statut[] = "Ce sachet de graines n'est pas sorti ";
				$erreur = true;
			}
			
		}else{
			$statut[] = "Une donnée n'a pas pu être vérifiée";
			$erreur = true;
		}
		
		mysql_free_result($result_verification_sortie);
		
	}
	
	//---------------------------------- Suppression de la sortie ----------------------------------
	
	if(!$erreur){ // aucune erreur n'a été rencontrée jusqu'ici
	
		// Récupération des informations nécessaires à la suppression
		$query_recuperation_sachet_graines = "SELECT so.CODEPRETSORTANT, so.DATESORTIE ";
		$query_recuperation_sachet_graines .= "FROM sachet_graines sa ";
		$query_recuperation_sachet_graines .= "LEFT JOIN sortie so ON so.CODESACHETGRAINE = sa.CODESACHETGRAINE AND so.DATESORTIE = (SELECT MAX(DATESORTIE) FROM sortie WHERE CODESACHETGRAINE = ".$_GET['id'].") ";
		$query_recuperation_sachet_graines .= "WHERE sa.CODESACHETGRAINE = ".$_GET['id']." ";
		
		$result_recuperation_sachet_graines = mysql_query($query_recuperation_sachet_graines, $connexion) or logError("RECUPERATION SACHET GRAINES-".$query_recuperation_sachet_graines."-".mysql_error());
			
		$tab_recuperation_sachet_graines = mysql_fetch_assoc($result_recuperation_sachet_graines);
		
		if(!is_null($tab_recuperation_sachet_graines['CODEPRETSORTANT'])){ // Si la sortie est un prêt
			
			$query_update_sortie = "UPDATE sortie SET CODEPRETSORTANT = NULL WHERE CODEPRETSORTANT = ".$tab_recuperation_sachet_graines['CODEPRETSORTANT'];
			$result_update_sortie = mysql_query($query_update_sortie, $connexion) or logError("SUPPRESSION LIEN SORTIE PRETSORTANT-".$query_update_sortie."-".mysql_error());
			
			if($result_update_sortie === true){
				// Suppression des informations de la table PRET_SORTANT
				$query_suppression_pret = "DELETE FROM pret_sortant WHERE CODEPRETSORTANT = ".$tab_recuperation_sachet_graines['CODEPRETSORTANT']."";
				$result_suppression_pret = mysql_query($query_suppression_pret, $connexion) or logError("SUPPRESSION PRET-".$query_suppression_pret."-".mysql_error());
				
				if($result_suppression_pret === false){
					$statut[] = "Erreur critique lors de la l'annulation de la sortie du sachet de graines";
					$erreur = true;
				}
			} else {
				$statut[] = "Erreur critique lors de la suppression du prêt";
				$erreur = true;	
			}
		}
		
		if (!$erreur) {  // aucune erreur n'a été rencontrée jusqu'ici
		
			// Suppression des informations de la table SORTIE
			$query_suppression_sortie = "DELETE FROM sortie WHERE CODESACHETGRAINE = ".$_GET['id']." AND DATESORTIE = ".mysqlString($tab_recuperation_sachet_graines['DATESORTIE'])."";
			$result_suppression_sortie = mysql_query($query_suppression_sortie, $connexion) or logError("SUPPRESSION SORTIE-".$query_suppression_sortie."-".mysql_error());
					
			if($result_suppression_sortie === true) {
				$statut[] = "L'annulation de la sortie du sachet de graines a été effectuée - redirection dans 2 sec...";
				logAction("SORTIE (id: ".$_GET['id'].") SUPPRIMEE par ".capitalise($GLOBALS['USER']['prenom'])." ".mb_strtoupper($GLOBALS['USER']['nom'])." (".$GLOBALS['USER']['login'].")");
			} else {
				$statut[] = "Erreur critique lors de l'annulation de la sortie";
				$erreur = true;	
			}
		}
		
		
		mysql_free_result($result_recuperation_sachet_graines);

	}

?>
<?php
//------------------------------------------------------------ Affichage du statut
	
	if($erreur){
		boutonRetour("index.php?p=gestion/sachetgraines_gere"); // appel à la fonction boutonRetour() définie dans fonctions.php
		afficherStatut($statut, 3); // appel à la fonction afficherStatut() définie dans fonctions.php
	}else{
		afficherStatut($statut, 1); // appel à la fonction afficherStatut() définie dans fonctions.php
		redirection("gestion/sachetgraines_gere", 2);
	}

?>
<?php
//------------------------------------------------------------ Accès refusé à la page

		}else{
			afficherStatut("Le sachet de graines n'est pas ou mal indiquée", 3); // appel à la fonction afficherStatut() définie dans fonctions.php
		}

	}else{
		if(isset($_SESSION)){
			if(!isset($_SESSION['user_id'])){ // si l'utilisateur n'est pas connecté
				include("pages/connexion.php");
			}else{ // si l'utilisateur est connecté et qu'il n'a pas accès à la page, c'est qu'il n'a pas le droit d'utilisation nécessaire
				include("pages/401.htm");
			}
		}
	}

?>